﻿function editLang() {
	if (refreshTab('editLang')) return;

	var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : url.getLangList
						}),
				reader : new Ext.data.JsonReader({
							root : 'result',
							id : 'code'
						}, ['code', 'title']),
				baseParams : {
					all : true
				}
			});
	var lang = new Ext.form.ComboBox({
				flex : 1,
				fieldLabel : '语言',
				mode : 'remote',
				triggerAction : 'all',
				valueField : 'code',
				displayField : 'title',
				editable : false,
				allowBlank : true,
				store : store,
				hiddenName : 'oldCode'
			});
	lang.on('select', function(combo, record, index) {
				getLangInfo({
							code : record.data.code,
							success : function(data) {
								onload(data);
								btndel.enable();
							}
						})
			});
	var title = new Ext.form.TextField({
				fieldLabel : 'Title',
				name : 'title',
				anchor : '100%',
				allowBlank : false
			});
	var code = new Ext.form.NumberField({
				fieldLabel : 'Code',
				name : 'code',
				anchor : '100%',
				allowBlank : false,
				allowDecimals : false,
				allowNegative : false
			});
	var disa = new Ext.form.Checkbox({
				boxLabel : 'Disabled',
				name : 'disabled'
			});
	var basecode = new Ext.form.TextArea({
				fieldLabel : '测试程序',
				name : 'standardCode',
				height : 300,
				anchor : '100%',
				validator : function(v) {
					if (!Ext.isEmpty(v) || basetest.collapsed) return true;
					return '请输入内容';
				}
			});
	var basetime = new Ext.form.TextField({
				fieldLabel : '标准耗时(MS)',
				name : 'standardTime',
				anchor : '100%',
				validator : function(v) {
					if (!Ext.isEmpty(v) || basetest.collapsed) return true;
					return '请输入内容';
				}
			});
	var basemem = new Ext.form.TextField({
				fieldLabel : '标准耗存(KB)',
				name : 'standardMem',
				anchor : '100%',
				validator : function(v) {
					if (!Ext.isEmpty(v) || basetest.collapsed) return true;
					return '请输入内容';
				}
			});
	var reg = new Ext.form.TextArea({
				fieldLabel : '',
				name : 'safeRegExp',
				height : 300,
				anchor : '100%',
				validator : function(v) {
					if (!Ext.isEmpty(v) || safetest.collapsed) return true;
					return '过滤正则表达式'
				}
			});

	var basetest = new Ext.form.FieldSet({
				title : '基准测试',
				collapsed : true,
				checkboxToggle : true,
				checkboxName : 'standardTest',
				items : [basecode, {
							layout : 'column',
							border : false,
							defaults : {
								border : false
							},
							items : [{
										layout : 'form',
										columnWidth : .5,
										items : basetime
									}, {
										layout : 'form',
										columnWidth : .5,
										items : basemem
									}]
						}]
			});
	var safetest = new Ext.form.FieldSet({
				title : '安全测试',
				collapsed : true,
				checkboxToggle : true,
				checkboxName : 'safeTest',
				labelAlign : 'top',
				items : reg
			});
	var btndel = new Ext.Button({
				text : '删除',
				iconCls : 'delete-icon',
				handler : ondel,
				disabled : true
			});
	var form = new Ext.FormPanel({
				id : 'editLang',
				title : 'Language',
				labelAlign : 'right',
				labelWidth : 60,
				autoScroll : true,
				closable : true,
				bodyStyle : 'padding: 20px 40px 20px 20px',
				items : [{
							border : false,
							layout : 'hbox',
							items : [{
										border : false,
										layout : 'form',
										style : 'padding-right:5px',
										items : lang
									}, new Ext.Button({
												text : '新建',
												iconCls : 'add-icon',
												handler : onclear
											}), btndel]
						}, title, code, disa, basetest, safetest],
				fbar : [new Ext.Button({
							text : '提交',
							iconCls : 'ok-icon',
							handler : onsubmit
						})]
			});
	addTab(form);

	function onclear() {
		store.reload();
		form.getForm().reset();
		basetest.collapse();
		safetest.collapse();
		btndel.disable();
		lang.setValue(null);
	}
	function onload(data) {
		title.setValue(data.title);
		code.setValue(data.code);
		disa.setValue(data.disabled);
		if (data.standardTest)
			basetest.expand();
		else
			basetest.collapse();
		basecode.setValue(data.standardCode);
		basetime.setValue(data.standardTime);
		basemem.setValue(data.standardMem);
		if (data.safeTest)
			safetest.expand();
		else
			safetest.collapse();
		reg.setValue(data.safeRegExp);
	}
	function onsubmit() {
		if (!form.getForm().isValid()) {
			alertx('请正确输入数据！');
			return;
		}
		ajaxform({
					form : form,
					url : url.addOrEditLangInfo,
					success : function() {
						alertx('修改成功！');
						onclear();
					}
				});
	}
	function ondel() {
		if (Ext.isEmpty(lang.getValue())) {
			alertx('请先选择一个语言');
			return;
		}
		deleteLang({
					code : lang.getValue(),
					success : function() {
						alertx('删除成功！');
						onclear();
					}
				});
	}
}

function getLangInfo(obj) {
	ajax({
				url : url.getLangInfo,
				params : {
					code : obj.code
				},
				success : obj.success
			});
}

function deleteLang(obj) {
	obj = defaultx(obj, 'code');
	confirmx('您确定要删除语言 - ' + obj.code + ' 吗<br />所有使用该语言的状态都会被删除！<br />如果只是暂时不被使用则只需禁用即可。', function() {
				ajax({
							url : url.deleteLang,
							params : {
								code : obj.code
							},
							success : obj.success
						});
			});
}
